<template>
  <div class="container">
    <h2>name: {{ name }} age: {{ age }}</h2>
    <button @click="updateName">修改数据</button>
  </div>
</template>
<script>
import { reactive, toRef } from 'vue'
export default {
  name: 'App',
  setup() {
    const obj = reactive({
      name: 'ifer',
      age: 10,
      address: '河南',
      sex: '男',
    })
    // 问题 1：模板中只用了两个属性，你确把整个对象都导出了（没必要，性能也不好）
    // 问题 2：模板中有重复的代码，例如 obj. ...
    // !可以把响应式对象中的某个属性转为单独的响应式对象（ref 对象）
    const name = toRef(obj, 'name')
    const age = toRef(obj, 'age')
    const updateName = () => {
      // 不要忘记加 .value
      // name.value = 'xxx'
      // !并且转换后的值和之前是关联的（修改原来的也会影响现在的）
      obj.name = 'xxx'
    }
    return { name, age, updateName }
  },
}

/* const o = { age: 18 }
// 把 o.age 完完全复制了一份，给了 age 变量，xx 里面的 age 脱离了原来的对象，和原来没关系了
const xx = { age: o.age }
xx.age = 19
console.log(o.age) */
</script>